package com.volcreate.inn.mapper;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.volcreate.inn.po.Blog;
import com.volcreate.inn.po.Tag;
import com.volcreate.inn.vo.BlogVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zxc
 * @since 2020-08-23
 */
@Repository
public interface BlogMapper extends BaseMapper<Blog> {

    /**
     * 查询所有的Blog详情，包括blog和tag的多对多的联系 一级 type和blog的一对多联系 封装到了BlogQuery
     *
     * @return 返回一个详细的博客集合
     */
    List<BlogVO> selectAllBlogVO();

    List<BlogVO> selectArchiveByYear(String year);

    BlogVO selectById(Long id);

    List<String> selectGroupYear();

    int insertBatchBlogTag(@Param("blogId") Long id, @Param("tagList") List<Tag> tagList);

    int deleteBatchBlogTag(@Param("blogId") Long id, @Param("tagList") List<Tag> tagList);

    int deleteBlogTag(@Param("blogId") Long id);

    /**
     * @param wrapper 查询条件
     * @return
     */
    List<BlogVO> selectByBlogQuery(@Param(Constants.WRAPPER) Wrapper wrapper);

    List<BlogVO> selectByBlogSearch(@Param("query") String query);

    List<BlogVO> selectBlogByUser(@Param("userId") Long userId);

    int updateViews(Long id);

    int updateLike(Long id);

}
